#!/bin/sh
#
# Copyright (C) 2000-2025 Kern Sibbald
# License: BSD 2-Clause; see file LICENSE-FOSS
#

#
# Run a simple backup of the Bacula build directory
#   then restore it.
#

TestName="dev-test-root"
. scripts/functions

require_root

scripts/cleanup
scripts/copy-test-confs
echo "/dev" >${cwd}/tmp/file-list

start_test

cat <<END_OF_DATA >${cwd}/tmp/bconcmds
@$out /dev/null
messages
@$out ${cwd}/tmp/log1.out
label storage=File volume=TestVolume001
run job=NightlySave yes
wait
messages
@# 
@# now do a restore
@#
@$out ${cwd}/tmp/log2.out
restore where=${cwd}/tmp/bacula-restores select all done
yes
wait
messages
quit
END_OF_DATA

run_bacula  
check_for_zombie_jobs storage=File
stop_bacula

# More cleanup needed below

cd /
${cwd}/bin/testls -e ${cwd}/scripts/exclude-etc-test dev >${cwd}/tmp/original
cd ${cwd}/tmp/bacula-restores
${cwd}/bin/testls -e ${cwd}/scripts/exclude-etc-test dev >${cwd}/tmp/restored
cd ${cwd}/tmp
#
# Use sed to cut out parts that *always* change
#
cat >sed.scr <<END_OF_DATA
s%.*dev$%dev%
s%.*[0-9][0-9]:[0-9][0-9]:[0-9][0-9] dev/ptmx%dev/ptmx%
s%.*[0-9][0-9]:[0-9][0-9]:[0-9][0-9] dev/ttyp1%dev/ttyp1%
s%.*[0-9][0-9]:[0-9][0-9]:[0-9][0-9] dev/null%dev/null%
END_OF_DATA

# strip file system change messages then sed and sort
grep -v "Skip: File system change prohibited." original >1
sed -f sed.scr 1 | sort >original
#
mv -f restored 1
sed -f sed.scr 1 | sort >restored
rm -f sed.scr
#
cd ${cwd}
diff ${cwd}/tmp/original ${cwd}/tmp/restored 2>&1 1>/dev/null
if [ $? != 0 ] ; then
   echo " "
   echo " "
   echo "  ===== !!!! dev-test-root failed !!!! ===== "
   echo "  ===== !!!! dev-test-root failed !!!! ===== " >>test.out
   echo " "
else
   echo "  ===== dev-test-root OK ===== "
   echo "  ===== dev-test-root OK ===== " >>test.out
   scripts/cleanup
fi
